Robotic control systems and robots are a fairly new technology. The first digital computer-controlled apparatus operating in real time began to appear about the early 1960s. Before that, "control" took the form of analog controllers which could read analog inputs from sensors (e.g. pressure, temperature, etc.) and output electrical, pneumatic, or other forms of control signals to mechanical operators connected thereto for opening valves, etc. whereby the controlled function could be maintained at pre-established operating levels.
With the advent of digital computers, a number of sensors and operators could be connected to the computer and be controlled by the programs thereof. The programs, of course, could implement far more elaborate control logic for the system as a whole than the proportional band, rate, and reset functions typically implemented by the prior art controllers operating on an individual (and non-interconnected) basis.
What could probably be considered as the first industrial "robots" were the numerically controlled (NC) machines and assembly apparatus. Where previously such apparatus was operated under the control of human operators (with attendant possibility of error), the NC-controlled machines could repetitively perform manufacturing and assembly operations without error. Early versions of NC machines employed pre-punched paper tape inputs to provide the positional movement sequences for the machine. Later, the numerical sequences were stored in the memory of a digital computer.
While the mechanical aspects of such industrial (where the term "industrial" includes robots employed in space operations) robots have become more exotic in the period since their first introduction, the control (and programming) considerations thereof have not moved much beyond the starting point. Take for example the robot 10 of FIG. 1. The robot 10 comprises an arm 12 attached to a base 14 on one end and having a gripping hand 16 on the opposite end. The arm 12 comprises an upper portion 18 and a lower portion 20. There is a powered "shoulder" joint 22 connecting the upper portion 18 to the base 14, a powered "elbow" joint 24 connecting the upper portion 18 to the lower portion 20, and a "wrist" joint 26 connecting the lower portion 20 to the gripping hand 16. The robot 10 is connected to have the powered joints 22, 24, 26 operated by a computer 28 so as to effect desired movement of the gripping hand 16 as, for example, to pick up and move an object. While early NC machines were simply moved known amounts from a known starting point to effect their functions, robots such as robot 10 typically have force and motion sensors (not shown) incorporated within their joints so that there is feedback information available to the computer 28. Also, with an articulated arm such as arm 12, the dynamics of movement are much more exotic and important to the accuracy of the robot than simply moving a clamped part in X and Y axes along a bed under a rotating machine tool which is moved up and down in the Z axis to cause the machining of the part. Accordingly, the instructional sequences to the joints 22, 24, and 26 from the computer 28 are highly complex; and, like the NC apparatus where the sequence of movements to effect the desired machining of a part was pre-programmed into the controlling apparatus, the sequence of movements for the joints 22, 24, and 26 is pre-programmed into the computer 28. If any changes occur in the robot 10 or in the actions to be performed thereby, the instruction sequence must be re-programmed.
To fully comprehend the problem at hand, one must consider the typical environment for digital computer programming and the prior art aids provided therefore. The computer 28 only performs slavishly a sequence of machine language instructions which have been pre-loaded for execution at run time. In the execution of its instructions, a real-time computer can perform arithmetic calculations, make decisions, input dynamic information from sensors, and input information from tables. The tables can contain pre-established information and/or dynamically altered information. Typically, as depicted in FIG. 5, there are pre-defined instruction run-time support programs 40 (such as subroutines) that can be used by the main instruction sequence to accomplish routine tasks of a repetitive nature (such as trigonometric function calculation) necessary to the accomplishment of overall system performance. While the first programmers were forced to do their programming in machine language (an extremely tedious and error-prone process), support programs in the form of assemblers and then compilers (such as the compiler 30 of FIG. 5) made later (and present) efforts much easier to program and to debug. Through processes of experimentation and trial and error, formulas for expressing movement of the various arms and joints of a robot have been established to some degree of accuracy. While these formulas are complex and include many terms, the programming process has been greatly simplified by high level language compilers such as FORTRAN. The system's analyst/programmer must still establish and set down the sequence of formulas which is assumed will accomplish the desired sequence of movements to effect a required end result. As depicted in FIG. 2, the sequence of formulas comprising the movement instruction sequence is then input to a compiler 30 (a program running in a computer) which outputs a sequence of machine language instructions which are then loaded into the robot controlling computer 28 for later execution.
The instruction sequence to move the hand 16 of the robot 10 so as to pick up the object 32 in FIG. 1 can run several pages. Note that this is with the base 14 fixed and the object 32 fixed at a pre-established location. The instruction sequence is of such length simply to account for all the forces and inertial factors of the various joints 22, 24, 26 and the arm portions 18, 20 as the gripping hand 16 is moved from an initial point, to the object 32, and from thence to a final point. The object, of course, is to move the hand 16 smoothly along a trajectory from point to point and not in a jerky fashion constantly correcting from deviation errors. The robot must also apply a pre-described amount of force or stress to the objects that it is handling. As in all real-time movement control systems, a principle design factor in the system design and programming process is the elimination of any instability in the feedback control loop. Instability can lead to the robot 10 going into increased oscillations (leading finally to an error shutdown before damage can occur) or the inability to finally position the hand 16 at a desired point because of excessive overshoot as the result of each movement in a corrective direction.
Because of the foregoing approach to basic robotic programming and control, a computer-controlled two armed robot as shown in FIG. 3 is virtually impossible employing prior art techniques. This is particularly true in situations where the robot task is not numerically pre-programmed and must be changed or designed by the human operator at run time. The object of the robot 10' shown in FIG. 3 is for the two arms 12, 12' to pick up the two object halves 34, 34', bring them into alignment with one another, and push them together to form the object 32 while simultaneously lifting the object 32 up to and placing it on the shelf 33. A human performing the task would first pick up the two object halves 34, 34', bring them into alignment, and then push them together to form the object 32. Having formed the object 32, the object 32 would then be lifted up and be placed on the shelf 33. Obviously, the robot 10' has the potential to perform the assembly and placement process simultaneously. Using the prior art programming technique described above, however, it would be virtually impossible for a human programmer to program the sequence of operations necessary to cause the robot 10' to do so. As can be appreciated from pondering the various aspects which must be taken into consideration as compared with the simple one-arm robot of FIG. 1, the complexity with two arms and two components to perform a combined assembly and placement operation is vastly greater.
Another aspect which is not even considered in prior art robotic control schemes is changing dynamics of the environment. Take the situation depicted in FIG. 4, for example. This is the single armed robot 10 of FIG. 1 into which an obstacle 36 has been placed. If the robot 10 has been pre-programmed to move the hand 16 along the trajectory indicated by the dashed arrow 38, it will do so and strike the obstacle 36 rather than moving to the alternate trajectory indicated by the dashed arrow 40 as necessary to reach over the obstacle 36.
Yet another aspect of robotic control which is not even considered by prior art robotic control systems is the checking of anticipated movement in a fast simulation mode prior to actual implementation on a real-time basis to assure that what is desired has a high probability of occurring and adjusting the projected movement until the desired object is achieved in simulation prior to actual implementation.